package co.edu.usbcali.correspondencia.presentation.backingBeans;

import co.edu.usbcali.correspondencia.exceptions.*;
import co.edu.usbcali.correspondencia.modelo.*;
import co.edu.usbcali.correspondencia.modelo.dto.UnidadResidencialDTO;
import co.edu.usbcali.correspondencia.presentation.businessDelegate.BusinessDelegatorView;
import co.edu.usbcali.correspondencia.utilities.*;

import com.icesoft.faces.async.render.RenderManager;
import com.icesoft.faces.async.render.Renderable;
import com.icesoft.faces.component.ext.HtmlCommandButton;
import com.icesoft.faces.component.ext.HtmlInputText;
import com.icesoft.faces.component.ext.HtmlSelectOneMenu;
import com.icesoft.faces.component.ext.HtmlSelectOneRadio;
import com.icesoft.faces.component.selectinputdate.SelectInputDate;
import com.icesoft.faces.context.DisposableBean;
import com.icesoft.faces.webapp.xmlhttp.FatalRenderingException;
import com.icesoft.faces.webapp.xmlhttp.PersistentFacesState;
import com.icesoft.faces.webapp.xmlhttp.RenderingException;
import com.icesoft.faces.webapp.xmlhttp.TransientRenderingException;

import java.math.BigDecimal;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import java.util.Set;
import java.util.TimeZone;
import java.util.Vector;

import javax.faces.event.ActionEvent;
import javax.faces.event.ValueChangeEvent;
import javax.faces.model.DataModel;
import javax.faces.model.SelectItem;



public class UnidadResidencialView extends DataSource implements Renderable,
    DisposableBean {
    private HtmlInputText txtUnrBarrio = new HtmlInputText();
    private HtmlInputText txtUnrDireccion = new HtmlInputText();
    private HtmlInputText txtUnrNombre = new HtmlInputText();
    private HtmlInputText txtUnrTelefono = new HtmlInputText();
    private HtmlInputText txtAdmCodigo_Administrador = new HtmlInputText();
    private HtmlInputText txtEstCodigo_Estado = new HtmlInputText();
    private HtmlInputText txtUnrNit = new HtmlInputText();
    private HtmlCommandButton btnSave;
    private HtmlCommandButton btnModify;
    private HtmlCommandButton btnDelete;
    private HtmlCommandButton btnClear;
    private HtmlCommandButton btnCambiar;
    private boolean renderDataTable;
    private boolean flag = true;
    private RenderManager renderManager;
    private PersistentFacesState state = PersistentFacesState.getInstance();
    private List<UnidadResidencial> unidadResidencial;
    private List<UnidadResidencialDTO> unidadResidencialDTO;
    
    //Variables para el combo de ciudades
    private HtmlSelectOneMenu cmbCiudad;
    private List<SelectItem> ciudad;
    private List<Ciudad> listaciudades;
    
    //Variables para ConsultarUnidadResidencial
    private HtmlInputText txtConsulta;
	List<UnidadResidencial> unidadEncontradas;
	
	private HtmlSelectOneRadio radioSelecionado;

    

    public UnidadResidencialView() {
        super("");
        
    }

    public String action_clear() {
    	
    	txtUnrNit.setValue(null);
        txtUnrNit.setDisabled(false);
        
        txtAdmCodigo_Administrador.setValue(FacesUtils.getSession().getAttribute("codAdminLoc").toString());
        txtAdmCodigo_Administrador.setDisabled(true);
        
        txtUnrNombre.setValue(null);
        txtUnrNombre.setDisabled(true);
        
        txtUnrTelefono.setValue(null);
        txtUnrTelefono.setDisabled(true);
        
        txtUnrDireccion.setValue(null);
        txtUnrDireccion.setDisabled(true);
        
        txtUnrBarrio.setValue(null);
        txtUnrBarrio.setDisabled(true);
        
    	cmbCiudad.setValue("-1"); 
    	cmbCiudad.setDisabled(true);
                        
        txtEstCodigo_Estado.setValue(null);
        txtEstCodigo_Estado.setDisabled(true);
        
        btnSave.setDisabled(true);
        //btnDelete.setDisabled(true);
        btnModify.setDisabled(true);
        btnCambiar.setDisabled(true);
        btnClear.setDisabled(false);

        return "";
    }
    public void listener_txtId(ValueChangeEvent event) {
        if ((event.getNewValue() != null) && !event.getNewValue().equals("")) {
            UnidadResidencial entity = null;

            try {
                String unrNit = new String(txtUnrNit.getValue().toString());
                entity = BusinessDelegatorView.getUnidadResidencial(unrNit);
            } catch (Exception e) {
                
            }

            if (entity == null) {
            	cmbCiudad.setDisabled(false);
            	
                txtUnrBarrio.setDisabled(false);
                
                txtUnrDireccion.setDisabled(false);
                
                txtUnrNombre.setDisabled(false);
                
                txtUnrTelefono.setDisabled(false);
                
                txtAdmCodigo_Administrador.setDisabled(true);                
                txtAdmCodigo_Administrador.setValue(FacesUtils.getSession().getAttribute("codAdminLoc").toString());
                
                txtEstCodigo_Estado.setValue("Activo");
                txtEstCodigo_Estado.setDisabled(true);
                
                txtUnrNit.setDisabled(false);
                
                btnSave.setDisabled(false);
               // btnDelete.setDisabled(true);
                btnModify.setDisabled(true);
                btnCambiar.setDisabled(true);
                btnClear.setDisabled(false);
            } else {
            	if (entity.getEstado().getEstCodigo().equals("2")) {
            		txtUnrBarrio.setDisabled(true);
            		txtUnrDireccion.setDisabled(true);
                    txtUnrNombre.setDisabled(true);
                    txtUnrTelefono.setDisabled(true);
                    txtEstCodigo_Estado.setDisabled(true);
                    txtAdmCodigo_Administrador.setDisabled(true);
                    txtUnrNit.setDisabled(true);
                    cmbCiudad.setDisabled(true);
                    
                    btnSave.setDisabled(true);
                    //btnDelete.setDisabled(true);
                    btnModify.setDisabled(true);
                    btnCambiar.setDisabled(false);
                    btnClear.setDisabled(false);
                    
				}else{
					txtUnrBarrio.setDisabled(false);
					txtUnrDireccion.setDisabled(false);
	                txtUnrNombre.setDisabled(false);
	                txtUnrTelefono.setDisabled(false);
	                txtEstCodigo_Estado.setDisabled(true);
	                txtAdmCodigo_Administrador.setDisabled(true);
	                txtUnrNit.setDisabled(true);
	                cmbCiudad.setDisabled(false);
	                
	                btnSave.setDisabled(true);
	               // btnDelete.setDisabled(true);
	                btnModify.setDisabled(false);
	                btnCambiar.setDisabled(false);
	                btnClear.setDisabled(false);
				}
            	
                txtUnrBarrio.setValue(entity.getUnrBarrio());                  
                txtUnrDireccion.setValue(entity.getUnrDireccion());                
                txtUnrNombre.setValue(entity.getUnrNombre());                
                txtUnrTelefono.setValue(entity.getUnrTelefono());                
                txtAdmCodigo_Administrador.setValue(entity.getAdministrador()
                                                          .getAdmCodigo());               
                txtEstCodigo_Estado.setValue(entity.getEstado().getEstNombre());                
                txtUnrNit.setValue(entity.getUnrNit());
                cmbCiudad.setValue(entity.getCiudad().getCiuCodigo());               
                
            }
        }
    }
   

    public String action_save() {
        try {       	
        				
            BusinessDelegatorView.saveUnidadResidencial(FacesUtils.checkString(
                txtUnrBarrio), FacesUtils.checkString(txtUnrDireccion),
                FacesUtils.checkString(txtUnrNit),
                FacesUtils.checkString(txtUnrNombre),
                FacesUtils.checkString(txtUnrTelefono),
                FacesUtils.checkString(txtAdmCodigo_Administrador),
                cmbCiudad.getValue().toString(),
                "1");
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYSAVED);
            action_clear();
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        return "";
    }

    

    public String action_modify() {
        try {
        	
            BusinessDelegatorView.updateUnidadResidencial(FacesUtils.checkString(
                    txtUnrBarrio), FacesUtils.checkString(txtUnrDireccion),
                FacesUtils.checkString(txtUnrNit),
                FacesUtils.checkString(txtUnrNombre),
                FacesUtils.checkString(txtUnrTelefono),
                FacesUtils.checkString(txtAdmCodigo_Administrador),
                cmbCiudad.getValue().toString(),
                "1");
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYMODIFIED);
            action_clear();
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }
        return "";
    }
    
  //metodo que cambia el estado de activa a cancelada...
    public String action_modifyEstado() {
    	UnidadResidencial entity = null;
        try {
            String unrNit = new String(txtUnrNit.getValue().toString());
            entity = BusinessDelegatorView.getUnidadResidencial(unrNit);
            String estado= null;
        	if (entity.getEstado().getEstCodigo().equals("1")) {
				estado= "2";
			}else{
				estado= "1";
			}
        	
            BusinessDelegatorView.updateUnidadResidencial(FacesUtils.checkString(
                    txtUnrBarrio), FacesUtils.checkString(txtUnrDireccion),
                FacesUtils.checkString(txtUnrNit),
                FacesUtils.checkString(txtUnrNombre),
                FacesUtils.checkString(txtUnrTelefono),
                FacesUtils.checkString(txtAdmCodigo_Administrador),
                cmbCiudad.getValue().toString(),
               estado);
            FacesUtils.addInfoMessage("Se ha cambiado el estado");
            action_clear();
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }
        return "";
    }
    
     
  //metodo que llena el dataTable buscando por Nombre O por Nombre.....
    public void action_ConsultarUnidadRe(ActionEvent e) {
    	List<UnidadResidencial> lista = null;
    	lista = new ArrayList<UnidadResidencial>();
		try {
			Usuario u = (Usuario) FacesUtils.getSession().getAttribute("usuario");
			String consulta = txtConsulta.getValue().toString();
			 
			unidadEncontradas= new ArrayList<UnidadResidencial>();		
			
			//pregunta si es adminGlobal(2)
			if(u.getUsuCodigo().equals("2")){
				if (radioSelecionado.getValue().toString().equals("0")) {				
					lista = BusinessDelegatorView.llenarDataTableUnRes(
							FacesUtils.checkString(txtConsulta));				
				}else{
					lista = BusinessDelegatorView.llenarDataTableUnRes2(
							FacesUtils.checkString(txtConsulta));
				}
			}
			//pregunta si es adminLocal(5)
			String codigoAdmin = FacesUtils.getSession().getAttribute("codAdminLoc").toString();
			if(u.getUsuCodigo().equals("5")){
				if (radioSelecionado.getValue().toString().equals("0")) {
					
					lista = BusinessDelegatorView.llenarTblNombUnRe(FacesUtils.checkString(txtConsulta), codigoAdmin);				
				}else{
					lista = BusinessDelegatorView.llenarTblNITUnRe(FacesUtils.checkString(txtConsulta), codigoAdmin);
				}
			}
			
			for (int i = 0; i < lista.size(); i++) {
				UnidadResidencial d = new UnidadResidencial();
				d.setCiudad(lista.get(i).getCiudad());
				d.setEstado(lista.get(i).getEstado());
				d.setUnrBarrio(lista.get(i).getUnrBarrio());
				d.setUnrDireccion(lista.get(i).getUnrDireccion());
				d.setUnrNit(lista.get(i).getUnrNit());
				d.setUnrNombre(lista.get(i).getUnrNombre());
				d.setUnrTelefono(lista.get(i).getUnrTelefono());
				unidadEncontradas.add(d);	
			}
			
			
		} catch (Exception e2) {
			FacesUtils.addErrorMessage(e2.getMessage());
		}
	}

    
    

    public String action_modifyWitDTO(String unrBarrio, String unrDireccion,
        String unrNit, String unrNombre, String unrTelefono,
        String admCodigo_Administrador, String ciuCodigo_Ciudad,
        String estCodigo_Estado) throws Exception {
        try {
            BusinessDelegatorView.updateUnidadResidencial(unrBarrio,
                unrDireccion, unrNit, unrNombre, unrTelefono,
                admCodigo_Administrador, ciuCodigo_Ciudad, estCodigo_Estado);
            renderManager.getOnDemandRenderer("UnidadResidencialView")
                         .requestRender();
            FacesUtils.addInfoMessage(ZMessManager.ENTITY_SUCCESFULLYMODIFIED);
        } catch (Exception e) {
            //renderManager.getOnDemandRenderer("UnidadResidencialView").requestRender();
            FacesUtils.addErrorMessage(e.getMessage());
            throw e;
        }

        return "";
    }

    
    //Get and Set....
    
    
    public List<UnidadResidencial> getUnidadResidencial() {
        if (flag) {
            try {
                unidadResidencial = BusinessDelegatorView.getUnidadResidencial();
                flag = false;
            } catch (Exception e) {
                flag = true;
                FacesUtils.addErrorMessage(e.getMessage());
            }
        }

        return unidadResidencial;
    }

    public HtmlInputText getTxtConsulta() {
		return txtConsulta;
	}

	public void setTxtConsulta(HtmlInputText txtConsulta) {
		this.txtConsulta = txtConsulta;
	}

	public HtmlSelectOneRadio getRadioSelecionado() {
		return radioSelecionado;
	}

	public void setRadioSelecionado(HtmlSelectOneRadio radioSelecionado) {
		this.radioSelecionado = radioSelecionado;
	}

	public List<UnidadResidencial> getUnidadEncontradas() {
		return unidadEncontradas;
	}

	public void setUnidadEncontradas(List<UnidadResidencial> unidadEncontradas) {
		this.unidadEncontradas = unidadEncontradas;
	}

	public HtmlSelectOneMenu getCmbCiudad() {
    	listaciudades = new ArrayList<Ciudad>();
    	ciudad = new ArrayList<SelectItem>();
    	try {
			listaciudades=BusinessDelegatorView.getCiudad();
			SelectItem d = new SelectItem("-1","--Seleccione Uno--");
			ciudad.add(d);
			for (int i = 0; i < listaciudades.size(); i++) {
				SelectItem x = new SelectItem(listaciudades.get(i).getCiuCodigo(), listaciudades.get(i).getCiuNombre());
				ciudad.add(x);
			}
		} catch (Exception e) {
			System.out.println("error cargando las ciudades");
		}
		return cmbCiudad;
	}

	public void setCmbCiudad(HtmlSelectOneMenu cmbCiudad) {
		this.cmbCiudad = cmbCiudad;
	}

	public List<SelectItem> getCiudad() {
		return ciudad;
	}

	public void setCiudad(List<SelectItem> ciudad) {
		this.ciudad = ciudad;
	}

	public List<Ciudad> getListaciudades() {
		return listaciudades;
	}

	public void setListaciudades(List<Ciudad> listaciudades) {
		this.listaciudades = listaciudades;
	}

	public boolean isFlag() {
        return flag;
    }

    public void setUnidadResidencial(List<UnidadResidencial> unidadResidencial) {
        this.unidadResidencial = unidadResidencial;
    }

    public boolean isRenderDataTable() {
        try {
            if (flag) {
                if (BusinessDelegatorView.findTotalNumberUnidadResidencial() > 0) {
                    renderDataTable = true;
                } else {
                    renderDataTable = false;
                }
            }

            flag = false;
        } catch (Exception e) {
            renderDataTable = false;
            e.printStackTrace();
        }

        return renderDataTable;
    }

    public DataModel getData() {
        state = PersistentFacesState.getInstance();

        if (onePageDataModel == null) {
            onePageDataModel = new LocalDataModel(pageSize);
        }

        return onePageDataModel;
    }

    /**
    * This is where the Object data is retrieved from the database and
    * returned as a list of objects for display in the UI.
    */
    private DataPage<UnidadResidencial> getDataPage(int startRow, int pageSize) {
        // Retrieve the total number of objects from the database.  This
        // number is required by the DataPage object so the paginator will know
        // the relative location of the page data.
        int totalNumberUnidadResidencial = 0;

        try {
            totalNumberUnidadResidencial = BusinessDelegatorView.findTotalNumberUnidadResidencial()
                                                                .intValue();
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        // Calculate indices to be displayed in the ui.
        int endIndex = startRow + pageSize;

        if (endIndex > totalNumberUnidadResidencial) {
            endIndex = totalNumberUnidadResidencial;
        }

        try {
            unidadResidencial = BusinessDelegatorView.findPageUnidadResidencial(sortColumnName,
                    sortAscending, startRow, endIndex - startRow);

            // Remove this Renderable from the existing render groups.
            //leaveRenderGroups();        			
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        // Add this Renderable to the new render groups.
        //joinRenderGroups();
        // Reset the dirtyData flag.
        onePageDataModel.setDirtyData(false);
        // This is required when using Hibernate.  If the SessionManager is not
        // cleared or closed objects are cached and stale objects will show up
        // in the table.
        // This way, the detached objects are reread from the database.
        // This call is not required with Hibernate, which uses a Query Hint
        // to clear the l2 cache in the DAO.
        flag = true;

        return new DataPage<UnidadResidencial>(totalNumberUnidadResidencial,
            startRow, unidadResidencial);
    }

    public DataModel getDataDTO() {
        state = PersistentFacesState.getInstance();

        if (onePageDataModel == null) {
            onePageDataModel = new LocalDataModelDTO(pageSize);
        }

        return onePageDataModel;
    }

   
    private DataPage<UnidadResidencialDTO> getDataPageDTO(int startRow,
        int pageSize) {
        // Retrieve the total number of objects from the database.  This
        // number is required by the DataPage object so the paginator will know
        // the relative location of the page data.
        int totalNumberUnidadResidencial = 0;

        try {
            totalNumberUnidadResidencial = BusinessDelegatorView.findTotalNumberUnidadResidencial()
                                                                .intValue();
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        // Calculate indices to be displayed in the ui.
        int endIndex = startRow + pageSize;

        if (endIndex > totalNumberUnidadResidencial) {
            endIndex = totalNumberUnidadResidencial;
        }

        try {
            unidadResidencial = BusinessDelegatorView.findPageUnidadResidencial(sortColumnName,
                    sortAscending, startRow, endIndex - startRow);

            if (Utilities.validationsList(unidadResidencial)) {
                unidadResidencialDTO = new ArrayList<UnidadResidencialDTO>();

                for (UnidadResidencial unidadResidencialTmp : unidadResidencial) {
                    UnidadResidencialDTO unidadResidencialDTO2 = new UnidadResidencialDTO();
                    unidadResidencialDTO2.setUnrNit(unidadResidencialTmp.getUnrNit()
                                                                        .toString());
                    unidadResidencialDTO2.setUnrBarrio((unidadResidencialTmp.getUnrBarrio() != null)
                        ? unidadResidencialTmp.getUnrBarrio().toString() : null);
                    unidadResidencialDTO2.setUnrDireccion((unidadResidencialTmp.getUnrDireccion() != null)
                        ? unidadResidencialTmp.getUnrDireccion().toString() : null);
                    unidadResidencialDTO2.setUnrNombre((unidadResidencialTmp.getUnrNombre() != null)
                        ? unidadResidencialTmp.getUnrNombre().toString() : null);
                    unidadResidencialDTO2.setUnrTelefono((unidadResidencialTmp.getUnrTelefono() != null)
                        ? unidadResidencialTmp.getUnrTelefono().toString() : null);
                    unidadResidencialDTO2.setAdmCodigo_Administrador((unidadResidencialTmp.getAdministrador()
                                                                                          .getAdmCodigo() != null)
                        ? unidadResidencialTmp.getAdministrador().getAdmCodigo()
                                              .toString() : null);
                    unidadResidencialDTO2.setCiuCodigo_Ciudad((unidadResidencialTmp.getCiudad()
                                                                                   .getCiuCodigo() != null)
                        ? unidadResidencialTmp.getCiudad().getCiuCodigo()
                                              .toString() : null);
                    unidadResidencialDTO2.setEstCodigo_Estado((unidadResidencialTmp.getEstado()
                                                                                   .getEstCodigo() != null)
                        ? unidadResidencialTmp.getEstado().getEstCodigo()
                                              .toString() : null);
                    unidadResidencialDTO2.setUnidadResidencial(unidadResidencialTmp);
                    unidadResidencialDTO2.setUnidadResidencialView(this);
                    unidadResidencialDTO.add(unidadResidencialDTO2);
                }
            }

            // Remove this Renderable from the existing render groups.
            leaveRenderGroups();
        } catch (Exception e) {
            FacesUtils.addErrorMessage(e.getMessage());
        }

        // Add this Renderable to the new render groups.
        joinRenderGroups();
        // Reset the dirtyData flag.
        onePageDataModel.setDirtyData(false);
        // This is required when using Hibernate.  If the SessionManager is not
        // cleared or closed objects are cached and stale objects will show up
        // in the table.
        // This way, the detached objects are reread from the database.
        // This call is not required with Hibernate, which uses a Query Hint
        // to clear the l2 cache in the DAO.
        flag = true;

        return new DataPage<UnidadResidencialDTO>(totalNumberUnidadResidencial,
            startRow, unidadResidencialDTO);
    }

    protected boolean isDefaultAscending(String sortColumn) {
        return true;
    }


    public PersistentFacesState getState() {
        onePageDataModel.setDirtyData();

        return state;
    }

    public void setRenderManager(RenderManager renderManager) {
        this.renderManager = renderManager;
    }

    public void renderingException(RenderingException arg0) {
        if (arg0 instanceof TransientRenderingException) {
        } else if (arg0 instanceof FatalRenderingException) {
            // Remove from existing Customer render groups.
            leaveRenderGroups();
        }
    }


    private void leaveRenderGroups() {
        if (Utilities.validationsList(unidadResidencialDTO)) {
            for (UnidadResidencialDTO unidadResidencialTmp : unidadResidencialDTO) {
                renderManager.getOnDemandRenderer("UnidadResidencialView")
                             .remove(this);
            }
        }
    }

   
    private void joinRenderGroups() {
        if (Utilities.validationsList(unidadResidencialDTO)) {
            for (UnidadResidencialDTO unidadResidencialTmp : unidadResidencialDTO) {
                renderManager.getOnDemandRenderer("UnidadResidencialView")
                             .add(this);
            }
        }
    }

    public void dispose() throws Exception {
    }

    public RenderManager getRenderManager() {
        return renderManager;
    }

    public void setState(PersistentFacesState state) {
        this.state = state;
    }

    public HtmlInputText getTxtUnrBarrio() {
    	txtUnrBarrio.setDisabled(true);
        return txtUnrBarrio;
    }

    public void setTxtUnrBarrio(HtmlInputText txtUnrBarrio) {
        this.txtUnrBarrio = txtUnrBarrio;
    }

    public HtmlInputText getTxtUnrDireccion() {
    	txtUnrDireccion.setDisabled(true);
        return txtUnrDireccion;
    }

    public void setTxtUnrDireccion(HtmlInputText txtUnrDireccion) {
        this.txtUnrDireccion = txtUnrDireccion;
    }

    public HtmlInputText getTxtUnrNombre() {
    	txtUnrNombre.setDisabled(true);
        return txtUnrNombre;
    }

    public void setTxtUnrNombre(HtmlInputText txtUnrNombre) {
        this.txtUnrNombre = txtUnrNombre;
    }

    public HtmlInputText getTxtUnrTelefono() {
    	txtUnrTelefono.setDisabled(true);
        return txtUnrTelefono;
    }

    public void setTxtUnrTelefono(HtmlInputText txtUnrTelefono) {
        this.txtUnrTelefono = txtUnrTelefono;
    }

    public HtmlInputText getTxtAdmCodigo_Administrador() {
    	txtAdmCodigo_Administrador.setValue(FacesUtils.getSession().getAttribute("codAdminLoc").toString());
    	txtAdmCodigo_Administrador.setDisabled(true);
        return txtAdmCodigo_Administrador;
    }

    public void setTxtAdmCodigo_Administrador(
        HtmlInputText txtAdmCodigo_Administrador) {
        this.txtAdmCodigo_Administrador = txtAdmCodigo_Administrador;
    }

    public HtmlInputText getTxtEstCodigo_Estado() {
    	return txtEstCodigo_Estado;
    }

    public void setTxtEstCodigo_Estado(HtmlInputText txtEstCodigo_Estado) {
        this.txtEstCodigo_Estado = txtEstCodigo_Estado;
    }

    public HtmlInputText getTxtUnrNit() {
        return txtUnrNit;
    }

    public void setTxtUnrNit(HtmlInputText txtUnrNit) {
        this.txtUnrNit = txtUnrNit;
    }

    public HtmlCommandButton getBtnSave() {
        return btnSave;
    }

    public void setBtnSave(HtmlCommandButton btnSave) {
        this.btnSave = btnSave;
    }

    public HtmlCommandButton getBtnModify() {
        return btnModify;
    }

    public void setBtnModify(HtmlCommandButton btnModify) {
        this.btnModify = btnModify;
    }

    public HtmlCommandButton getBtnDelete() {
        return btnDelete;
    }

    public void setBtnDelete(HtmlCommandButton btnDelete) {
        this.btnDelete = btnDelete;
    }

    public HtmlCommandButton getBtnClear() {
        return btnClear;
    }

    public void setBtnClear(HtmlCommandButton btnClear) {
        this.btnClear = btnClear;
    }

    public void setRenderDataTable(boolean renderDataTable) {
        this.renderDataTable = renderDataTable;
    }

    public void setFlag(boolean flag) {
        this.flag = flag;
    }

    public List<UnidadResidencialDTO> getUnidadResidencialDTO() {
        return unidadResidencialDTO;
    }

    public void setUnidadResidencialDTO(
        List<UnidadResidencialDTO> unidadResidencialDTO) {
        this.unidadResidencialDTO = unidadResidencialDTO;
    }

    public TimeZone getTimeZone() {
        return java.util.TimeZone.getDefault();
    }
    
    

    public HtmlCommandButton getBtnCambiar() {
		return btnCambiar;
	}

	public void setBtnCambiar(HtmlCommandButton btnCambiar) {
		this.btnCambiar = btnCambiar;
	}



	/**
    * A special type of JSF DataModel to allow a datatable and datapaginator
    * to page through a large set of data without having to hold the entire
    * set of data in memory at once.
    * Any time a managed bean wants to avoid holding an entire dataset,
    * the managed bean declares this inner class which extends PagedListDataModel
    * and implements the fetchData method. fetchData is called
    * as needed when the table requires data that isn't available in the
    * current data page held by this object.
    * This requires the managed bean (and in general the business
    * method that the managed bean uses) to provide the data wrapped in
    * a DataPage object that provides info on the full size of the dataset.
    */
    private class LocalDataModel extends PagedListDataModel {
        public LocalDataModel(int pageSize) {
            super(pageSize);
        }

        public DataPage<UnidadResidencial> fetchPage(int startRow, int pageSize) {
            // call enclosing managed bean method to fetch the data
            return getDataPage(startRow, pageSize);
        }
    }

    private class LocalDataModelDTO extends PagedListDataModel {
        public LocalDataModelDTO(int pageSize) {
            super(pageSize);
        }

        public DataPage<UnidadResidencialDTO> fetchPage(int startRow,
            int pageSize) {
            // call enclosing managed bean method to fetch the data
            return getDataPageDTO(startRow, pageSize);
        }
    }
}
